home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-09-24 | 7.3 KB | 136 lines | [TEXT/MPPS] |
- September 23rd, 1994
-
- MW Pascal 68K 1.0b7 Release notes.
-
- Fixed from CW/4
-
- - ANS compliance
- - FPU support for std math functions,
- - FP negate doesn't generate bogus code anymore,
- - Fixed calling convention for external C function when FPU enabled,
- - Structured returns can be accessed from inside the function,
- - Byte sets are supported and codegen fixed when passed as by-value args,
- - type casting of scalar variables in expressions generate a value conversion,
- - non-short-circuit boolean expressions are done,
- - implicit conversion of unsigned ranges aren't sign extended anymore,
- - transforming a char expression into a string is working,
- - packed arrays assignments, clear the target bits before making them,
- - writing char expression to SIOUX is corrected,
- - writing of strinsg smaller than 4 char corrected,
- - writing in files of... the arg's address is now always passed,
- - type checking for procedure parameter with univ params is corrected,
- - fixed a bug in heap management that prevented memory disposal,
- - fixed a bug with ABS when the arg is a range,
- - fixed sizeof when the variable/type contains a file,
- - fixed a problem with gotos that came back to the main program,
- - disabled goto from routine to routine when they're not nested,
- - enabled smart code generation for non-local gotos/exit for nexted functions,
- - integers can't be passed as by-value string anymore.
- - Added to Pascal/Mathlib.lib & Pascal/MathLib881.lib a few entry points that were missing
- (dec2num, dec2str, str2dec, str2num, %P_Entry, etc...). These libraries should be now
- self-contained. Added also some missing entry points to Pascal/SANE881.lib.
- - Fixed a bug in write that prevented functions returning strings <= 4 bytes from being
- actual parameters.
- - Fixed a bug with packed arrays of boolean when the array index is a constant and the
- value assigned is also a constant.
- - Enabled lvalue type catsing on function returns.
- - Fixed a bug with the typecast of a by-var parameter as the expression of a with statement.
- - Fixed a bug in BE for functions returning strings, the parameters weren't popped by the
- callee.
- - Fixed a bug for functions returning 1-byte sets, the set wasn't placed in the right byte.
- - Fixed a bug in casting of ordinal types to pointer types.
- - Enabled casting of integer constants to small arrays of something different that chars.
- - Fixed a bug in parsing parameter declarations, if the parameter list started with ((, it
- caused the compiler to hang.
- - In some cases, a FP value was badly placed in precompiled units.
- - Casting to small structured types didn't permit a selector afterward.
- - bug in types.p made OSTYPE incompatible with strings.
- - fixed FP output in writing to the console (SIOUX) and in StringOf.
- - fixed a bug in Pos, return errorneous value when 1-char target missed.
-
- Known problems and limitations
-
- - input^ and output^ generate bogus code.
- - I/O and memory management std routines can't be used in code resources.
-
- Make utility
- - The make utility is rewritten and working, remove all binaries and compact your projects
- before using the new make command. The algorithm & implementation are faster than with
- the previous implementation. The direct compilation of a unit (cmd-K) will compile
- only the implementation if the interface wasn't changed, otherwise the entire file is
- compiled. If you have dependencies for which the units weren't compiled, you'll get
- unit wasn't compiled, use the make command instead. There's a timestamp for every
- project's unit interface compiled, these timestamps are used by the make utility to
- compute the needed recompilations. There's no timestamp in libraries, so if you modify
- a lib's interface and make a lib out of that project to use in another project you
- should remove the binaries and remake the project, I choosed to use this approach
- because it's less likely that someone changes a lib interface than a lib implementation.
- - The make utility can generate a trace of the compilations, to enable this function
- you have to check the 'generate make map file' from the Language preferences settings.
- (If the make detects a cycle, use this option to print the files involded in it.)
-
- Preprocessor
- - MWERKS is defined as TRUE.
- - MAC68K is defined as TRUE.
- - POWERPC is defined as FALSE.
- - conditional compilation is supported.
- - the following options are not supported, but will be
- $MC680x0, $MC6888x, $OV, $R,
- - the following options won't be supported
- $B, $C, $H, $N, $A1, $A5, $E, $K, $P, $W, $D
-
- Extensions
- - QuickDraw global variables (thePort, ...) are now contained in a record variable
- named qd. (See Sillyballs.p or TubeTest.p, to see its usage).
- - Procedural types are supported, see the documentation ...
- - Objects can be propagated through USES clauses with the Uses propagation switch.
- - Directives in the prefix file must use the preprocessor's syntax.
- - Screen oriented I/O are triggered by the first I/O call made without a file descriptor.
-
- Assembler
- - The assembler's syntax is the same as for the C compiler, the function's header is :
- ProcedureHeading 'ASM' ';' { ConstDecl VarDecl TypeDecl }
- 'BEGIN' AssemblerStatements 'END' ';'
- refer to Tech notes for more informations.
-
- Interfaces
- - You have to include either MacIntf(MPW).lib or MacIntf(UPI).lib to access
- Macintosh interfaces. The 2.0a1 interfaces are a development release
- of the Pascal universal interfaces from Apple, please read the included release
- notes. MacIntf(UPI).old.lib contains the precompiled Universal interfaces with
- the old routine names supported.
-
- Libraries
- - Pascal's libraries are divided into 3 parts, ANS libraries, MPW Libraries and
- UPI libraries. ANS libraries are specific to ANS compliant programs and should
- only be used when building Standard Pascal programs. MPW Libraries retain the
- same behaviour as MPW's Pascal runtime, while the UPI Libraries are adapted
- to the Universal Interfaces and new Mathlib from Apple. Libraries for ANSI-C
- functions are included in the runtime libraries.
-
- Code Resources
- - Code resources can only be built from units, you have to indicate, in the unit's
- interface part the main entry point. This entry point is indicated by the {$MAIN}
- directive. Pascal doesn't use A4-relative indexing to access global data, you
- have to use nested procedures to emulate global data. Take a look at MWMemory
- example to see how to declare it. You'll also need to write a small ASM function
- to glue the unit's main to the Pascal code, this is due to different calling
- conventions between the startup code and Pascal. Another way to do it is to write
- the main function in C, it then calls the Pascal entry point, in this case, you
- don't need to use {$MAIN} and the C mian must be compiled into an A4-relative library.
- (Don't forget to use the pascal keyword to force pascal calling convention and reversed
- parameterlist). You cannot use NEW and DISPOSE, in code resources.
-
-
- -----------------------------------------------------------------------------
- Marcel Achim Pascal Compilers Product Architect
-
-
- Bug Reports, Suggestions, and Technical Questions
- `````````````````````````````````````````````````
-
- Please send in your bug reports using the email Bug Report, Suggestion or Tech Question
- templates stored in the release notes folder. Send reports to support@metrowerks.com.
-
-
-